home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0"?>
- <!DOCTYPE window [
- <!ENTITY % bookmarksDTD SYSTEM "chrome://browser/locale/bookmarks/bookmarks.dtd" >
- <!ENTITY % ybookmarksDTD SYSTEM "chrome://ybookmarks/locale/ybookmarks.dtd" >
- %bookmarksDTD;
- %ybookmarksDTD;
- ]>
- <bindings id="bookmarksBindings"
- xmlns="http://www.mozilla.org/xbl"
- xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:xbl="http://www.mozilla.org/xbl">
-
- <binding id="ybBookmarksTree" extends="chrome://browser/content/bookmarks/bookmarksTree.xml#bookmarks-tree-full">
- <implementation>
- <field name="_storeService" />
-
- <field name="_memDataSource" />
-
- <field name="_rdfService" />
- <field name="_rdfContainerUtils" />
-
- <field name="_rsrcURL" />
- <field name="_rsrcImported" />
- <field name="_rsrcImportedTrue" />
-
- <constructor><![CDATA[
- try {
- this._storeService = Components.classes["@mozilla.org/ybookmarks-store-service;1"].
- getService(Components.interfaces.nsIYBookmarksStoreService);
- this._rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
- getService(Components.interfaces.nsIRDFService);
- this._rdfContainerUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].
- getService(Components.interfaces.nsIRDFContainerUtils);
-
- this._rsrcURL = this._rdfService.GetResource("http://home.netscape.com/NC-rdf#URL");
- this._rsrcImported = this._rdfService.GetResource("http://home.netscape.com/NC-rdf#Imported");
- this._rsrcImportedTrue = this._rdfService.GetLiteral("importedBookmark");
- this._setupDataSource();
-
- } catch (e) {
- yDebug.print("ybBookmarksTree constructor: " + e);
- }
- ]]></constructor>
-
- <method name="_setupDataSource">
- <body>
- <![CDATA[
- try {
- var bmTree = document.getAnonymousElementByAttribute(this, "anonid", "bookmarks-tree");
- var dsEnum = bmTree.database.GetDataSources();
- var bmDataSource = null;
-
- while (dsEnum.hasMoreElements()) {
- var ds = dsEnum.getNext().QueryInterface(Components.interfaces.nsIRDFDataSource);
- if (ds.URI == "rdf:bookmarks") {
- bmDataSource = ds;
- break;
- }
- }
- this._memDataSource = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].
- createInstance(Components.interfaces.nsIRDFInMemoryDataSource);
- this._memDataSource.QueryInterface(Components.interfaces.nsIRDFDataSource);
-
- var bmRoot = this._rdfService.GetResource("NC:BookmarksRoot")
-
- this._traverseBookmarkTree(bmDataSource, bmRoot);
-
- bmTree.database.AddDataSource(this._memDataSource);
-
- } catch(e) {
- yDebug.print("ybBookmarksManager.setupDataSource():" + e);
- }
- ]]>
- </body>
- </method>
-
- <method name="_traverseBookmarkTree">
- <parameter name="bmDataSource" />
- <parameter name="aRoot" />
- <body>
- <![CDATA[
-
- var urlParser = Components.classes["@mozilla.org/network/url-parser;1?auth=maybe"].
- createInstance(Components.interfaces.nsIURLParser);
-
- var normalizeUrl = function(url) { //lowercase the domain
- var schemePos = new Number();
- var schemeLen = new Number();
- var authPos = new Number();
- var authLen = new Number();
- var pathPos = new Number();
- var pathLen = new Number();
- urlParser.parseURL(url, url.length, schemePos, schemeLen, authPos, authLen, pathPos, pathLen);
-
- var auth = url.substr(authPos.value, authLen.value);
- var userPos = new Number();
- var userLen = new Number();
- var passPos = new Number();
- var passLen = new Number();
- var hostPos = new Number();
- var hostLen = new Number();
- var port = new Number();
- urlParser.parseAuthority(auth, auth.length, userPos, userLen, passPos, passLen, hostPos, hostLen, port);
-
- var domainStart = hostPos.value + authPos.value;
- var domainLen = hostLen.value;
-
- var normUrl = url.substring(0, domainStart) + url.substr(domainStart, domainLen).toLowerCase() + url.substring(domainStart+domainLen);
- if (pathLen.value == -1) {
- normUrl += "/";
- }
- return normUrl;
-
- };
- var queue = [ aRoot ];
- while (queue.length > 0) {
- var node = queue.shift();
- if (bmDataSource.hasArcOut(node, this._rsrcURL)) {
- // check if the node's a bookmark
- var url = bmDataSource.GetTarget(node, this._rsrcURL, true).QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
- var normUrl = normalizeUrl(url);
- // yDebug.print("url: " + url);
- // yDebug.print("normalized url: " + normUrl);
-
- if (this._storeService.isBookmarked(normUrl)) {
- this._memDataSource.Assert(node, this._rsrcImported, this._rsrcImportedTrue, true);
- }
- } else if (this._rdfContainerUtils.IsSeq(bmDataSource, node)) {
- // if it's a folder, add the resources
- var nodeSeq = this._rdfContainerUtils.MakeSeq(bmDataSource, node);
- var nodeEnum = nodeSeq.GetElements();
-
- while (nodeEnum.hasMoreElements()) {
- var rsrc = nodeEnum.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
- queue.push(rsrc);
- }
-
- }
- }
- ]]>
- </body>
- </method>
-
- </implementation>
-
- <xbl:content xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"
- contextmenu="_child">
- <!-- XXXben need focus event handler for cmd update -->
- <!-- context menu -->
- <menupopup onpopupshowing="this.parentNode.createTreeContextMenu(event);"
- onpopuphidden="if (content) content.focus()"
- onclick="event.stopPropagation();"
- onkeypress="event.stopPropagation();"/>
- <vbox flex="1">
- <tree anonid="bookmarks-tree" flex="1" class="plain" enableColumnDrag="true"
- datasources="rdf:bookmarks rdf:files rdf:localsearch" ref="NC:BookmarksTopRoot" flags="dont-build-content"
- onkeypress="if (event.keyCode == 13) this.parentNode.parentNode.openItemKey();"
- onclick="this.parentNode.parentNode.openItemClick(event, 1);"
- ondblclick="this.parentNode.parentNode.openItemClick(event, 2);"
- ondraggesture="if (event.originalTarget.localName == 'treechildren') nsDragAndDrop.startDrag(event, this.parentNode.parentNode.DNDObserver);"
- onselect="this.treeBoxObject.view.selectionChanged();">
- <template xmlns:nc="http://home.netscape.com/NC-rdf#">
- <rule rdf:type="http://home.netscape.com/NC-rdf#BookmarkSeparator">
- <treechildren>
- <treeitem uri="rdf:*">
- <treerow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type separator">
- <treecell properties="separator" label="rdf:http://home.netscape.com/NC-rdf#Name"/>
- </treerow>
- </treeitem>
- </treechildren>
- </rule>
- <rule rdf:type="http://home.netscape.com/NC-rdf#MicsumBookmark">
- <treechildren>
- <treeitem uri="rdf:*">
- <treerow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
- <treecell src="rdf:http://home.netscape.com/NC-rdf#Icon"
- label="rdf:http://home.netscape.com/NC-rdf#GeneratedTitle"/>
- <treecell properties="rdf:http://home.netscape.com/NC-rdf#Imported"/>
- <treecell label="rdf:http://home.netscape.com/NC-rdf#URL" />
- <treecell label="rdf:http://home.netscape.com/NC-rdf#ShortcutURL" />
- <treecell label="rdf:http://home.netscape.com/NC-rdf#Description" />
- <treecell label="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" />
- <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastModifiedDate" />
- <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"/>
- </treerow>
- </treeitem>
- </treechildren>
- </rule>
- <rule>
- <treechildren>
- <treeitem uri="rdf:*">
- <treerow properties="rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#type rdf:http://home.netscape.com/NC-rdf#loading rdf:http://home.netscape.com/WEB-rdf#status">
- <treecell src="rdf:http://home.netscape.com/NC-rdf#Icon"
- label="rdf:http://home.netscape.com/NC-rdf#Name"/>
- <treecell properties="rdf:http://home.netscape.com/NC-rdf#Imported"/>
- <treecell label="rdf:http://home.netscape.com/NC-rdf#URL" />
- <treecell label="rdf:http://home.netscape.com/NC-rdf#ShortcutURL" />
- <treecell label="rdf:http://home.netscape.com/NC-rdf#Description" />
- <treecell label="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate" />
- <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastModifiedDate" />
- <treecell label="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"/>
- </treerow>
- </treeitem>
- </treechildren>
- </rule>
- </template>
- <treecols anonid="treecols">
- <treecol id="Name" label="&treecol.name.label;" flex="1" primary="true"
- class="sortDirectionIndicator"
- persist="width hidden ordinal"
- sort="rdf:http://home.netscape.com/NC-rdf#Name"
- sortActive="true" sortDirection="none"/>
- <splitter class="tree-splitter" />
- <treecol id="Imported" label="&ybbookmarksmanager.treecol.imported.label;"
- class="sortDirectionIndicator"
- persist="width hidden ordinal"
- sort="rdf:http://home.netscape.com/NC-rdf#Imported" />
- <splitter class="tree-splitter" />
- <treecol id="URL" label="&treecol.url.label;"
- flex="1" class="sortDirectionIndicator"
- sort="rdf:http://home.netscape.com/NC-rdf#URL"
- persist="width hidden ordinal" />
- <splitter class="tree-splitter" />
- <treecol id="ShortcutURL" label="&treecol.shortcut.label;"
- hidden="true" flex="1" class="sortDirectionIndicator"
- persist="hidden width ordinal"
- sort="rdf:http://home.netscape.com/NC-rdf#ShortcutURL"/>
- <splitter class="tree-splitter"/>
- <treecol id="Description" label="&treecol.description.label;"
- flex="1" class="sortDirectionIndicator"
- persist="hidden width ordinal"
- sort="rdf:http://home.netscape.com/NC-rdf#Description"/>
- <splitter class="tree-splitter"/>
- <treecol id="AddDate" label="&treecol.addedon.label;"
- hidden="true" flex="1" class="sortDirectionIndicator"
- sort="rdf:http://home.netscape.com/NC-rdf#BookmarkAddDate"
- persist="width hidden ordinal" />
- <splitter class="tree-splitter" />
- <treecol id="LastModDate" label="&treecol.lastmod.label;"
- hidden="true" flex="1" class="sortDirectionIndicator"
- sort="rdf:http://home.netscape.com/WEB-rdf#LastModifiedDate"
- persist="width hidden ordinal" />
- <splitter class="tree-splitter" />
- <treecol id="LastVisitDate" label="&treecol.lastvisit.label;"
- hidden="true" flex="1" class="sortDirectionIndicator"
- sort="rdf:http://home.netscape.com/WEB-rdf#LastVisitDate"
- persist="width hidden ordinal" />
- <splitter class="tree-splitter" />
- </treecols>
- </tree>
- </vbox>
- </xbl:content>
-
- </binding>
-
-
-
- </bindings>
-
-
-